home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4 / Atari Forever 4.iso / SERIE_AI / AI_017 / INTERNET.TOS / SOFTWARE / LANCESR / LANCEMEM.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-17  |  3.8 KB  |  173 lines

  1. /* defines and type declarations to access the */
  2. /* lance of Riebl Card Plus */
  3.  
  4. #define u_char  unsigned char
  5. #define u_short unsigned short
  6. #define u_long  unsigned long
  7.  
  8. typedef u_char HADDR[6];    /* 6-byte hardware address of lance */
  9.  
  10. #define DRX        0x0001
  11. #define DTX        0x0002
  12. #define LOOP    0x0004
  13. #define DTCR    0x0008
  14. #define COLL    0x0010
  15. #define DRTY    0x0020
  16. #define INTL    0x0040
  17. #define PROM    0x8000
  18.  
  19. typedef struct            /* pointer to descriptor ringbuffer */
  20. {
  21.     u_short drp_lo;
  22.     u_char    len;
  23.     u_char    drp_hi;
  24. } DRP;
  25.  
  26.  
  27. typedef struct lnc_init        /* initblock of lance */
  28. {
  29.     u_short    mode;        /* mode word */
  30.     HADDR    haddr;        /* hardware address of lance */
  31.     long    laf[2];        /* logical adress filter */
  32.     DRP        rdrp;        /* receive ring descr. pointer */
  33.     DRP        tdrp;        /* xmit ring descr. pointer */
  34. } LNCINIT;
  35.  
  36.  
  37.  
  38. typedef struct        /* transmit message descriptor block */
  39. {
  40.     u_short    ladr;        /* TMD0 */
  41.     u_short tmd1;
  42.     u_short    tmd2;
  43.     u_short tmd3;
  44. } TMD;
  45.  
  46.     /* TMD1 */
  47. #define    ENP        0x0100
  48. #define STP        0x0200
  49. #define    DEF        0x0400
  50. #define ONE        0x0800
  51. #define    MORE    0x1000
  52. #define    ERR        0x4000
  53. #define OWN     0x8000
  54.  
  55. #define OWN_CHIP    OWN
  56. #define OWN_HOST    !OWN
  57.  
  58. #define TDR        0x03FF        /* TMD3 */
  59. #define RTRY    0x0400
  60. #define LCAR    0x0800
  61. #define LCOL    0x1000
  62. #define UFLO    0x4000
  63. #define BUFF3    0x8000
  64.  
  65. typedef struct            /* receive message descriptor block */
  66. {
  67.     u_short    ladr;        /* RMD0 */
  68.     u_short    rmd1;
  69.     u_short rmd2;
  70.     int        mcnt;        /* RMD3 */
  71. } RMD;
  72.  
  73.     /* RMD1 + bits in tmd1 */
  74. #define BUFF    0x0400
  75. #define CRC        0x0800
  76. #define OFLO    0x1000
  77. #define FRAM    0x2000
  78.     
  79. #define BCNT    0x0FFF        /* RMD2 */
  80. #define ONES    0xF000
  81.  
  82.  
  83. #define CSR0    0    /* register address in register address port */
  84. #define CSR1    1
  85. #define CSR2    2
  86. #define CSR3    3
  87.  
  88.  
  89. #define CSR0_INIT    0x0001        /* bits of CSR0 */
  90. #define CSR0_STRT    0x0002
  91. #define CSR0_STOP    0x0004
  92. #define CSR0_TDMD    0x0008
  93. #define CSR0_TXON    0x0010
  94. #define CSR0_RXON    0x0020
  95. #define CSR0_INEA    0x0040
  96. #define CSR0_INTR    0x0080
  97. #define CSR0_IDON    0x0100
  98. #define CSR0_TINT    0x0200
  99. #define CSR0_RINT    0x0400
  100. #define CSR0_MERR    0x0800
  101. #define CSR0_MISS    0x1000
  102. #define CSR0_CERR    0x2000
  103. #define CSR0_BABL    0x4000
  104. #define CSR0_ERR    0x8000
  105.  
  106. #define CSR3_BCON    0x0001        /* bits of CSR3 */
  107. #define CSR3_ACON    0x0002
  108. #define CSR3_BSWP    0x0004
  109.  
  110.  
  111. #ifdef MEGA_STE
  112.  
  113. #define RCP_RDP (int *)0xC0FFF0L    /* register data port addr */
  114. #define RCP_RAP    (int *)0xC0FFF2L    /* register address port addr */
  115. #define LANCEIVEC 0x50
  116. #define RCP_MEMBOT (char *)0xC10000L /* start of memory on rieblcard */
  117.  
  118. #else
  119.  
  120. #ifdef ATARI_TT
  121.  
  122. #define RCP_RDP (int *)0xFE00FFF0L    /* register data port addr */
  123. #define RCP_RAP    (int *)0xFE00FFF2L    /* register address port addr */
  124. #define LANCEIVEC 0x50
  125. #define RCP_MEMBOT (char *)0xFE010000L /* start of memory on rieblcard */
  126.  
  127. #else
  128.  
  129. #define RCP_RDP (int *)0xFF7000L    /* register data port addr */
  130. #define RCP_RAP    (int *)0xFF7002L    /* register address port addr */
  131. #define LANCEIVEC 0x1d
  132. #define RCP_MEMBOT (char *)0xE00000L /* start of memory on rieblcard */
  133.  
  134. #endif
  135. #endif
  136.  
  137. #define RECVBUFFS    16            /* max number of received packets */
  138. #define XMITBUFFS    1            /* max number of unsent packets */
  139. #define RECVRLEN    (0x04 << 5)
  140. #define XMITRLEN    0
  141.  
  142.  
  143. #define MAXPKTLEN    1518
  144.  
  145. #define write_register(r,v)    *RCP_RAP=(r);*RCP_RDP=(v)
  146. #define read_register(r,v)    *RCP_RAP=r;v=*RCP_RDP
  147.  
  148. typedef struct
  149. {
  150.     HADDR    et_dest;
  151.     HADDR    et_src;
  152.     u_short    et_type;
  153.     char    et_data[MAXPKTLEN-14];
  154. } PKTBUF;
  155.  
  156.  
  157. typedef struct
  158. {
  159.     LNCINIT    init;
  160.     TMD        tmd;        /* transmit descriptor blocks */
  161.     RMD        rmd[RECVBUFFS];        /* receive descriptor blocks */
  162. } LNCMEM;
  163.  
  164.  
  165. #define MAXPKT    40
  166. #define INIT ((LNCMEM *)RCP_MEMBOT)->init
  167. #define PRMD (((LNCMEM *)RCP_MEMBOT)->rmd)
  168. #define PTMD ((LNCMEM *)RCP_MEMBOT)->tmd
  169. #define PPKT (PKTBUF *)(RCP_MEMBOT + sizeof(LNCMEM))
  170. #define PPOOL (PKTPOOL *)(RCP_MEMBOT+sizeof(LNCMEM)+sizeof(PKTBUF)*MAXPKT)
  171.  
  172.  
  173.